package com.zuoban.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.concurrent.RejectedExecutionHandler;

@Data
@ConfigurationProperties(prefix = "thread")
public class ThreadPoolProperties {

    /**
     * 核心线程数
     */
    private int corePoolSize;
    /**
     * 最大容量线程数
     */
    private int maxPoolSize;
    /**
     * 存活时间 到点就完蛋
     */
    private int keepAliveSeconds;
    /**
     * 队列等待容量
     */
    private int queueCapacity;
    /**
     * 拒绝策略
     *  AbortPolicy：出问题直接抛异常，好处是可以根据业务逻辑自由选择是异常处理还是任务中断
     *  DiscardPolicy：队列满了，有新任务拒绝掉
     *  DiscardOldestPolicy：会丢弃掉任务执行时间最长的那个线程
     *  CallerRunsPolicy：当有新任务提交后，如果线程池没被关闭且没有能力执行，则把这个任务交于提交任务的线程执行，也就是谁提交任务，谁就负责执行任务。
     */
    private Class<? extends RejectedExecutionHandler> rejectExecutorHandler;
}
